package com.zlm.Interface;

/**
 * @author 13026
 * 接口中成员的特点
 * 成员变量只能是常量
 * 默认修饰符 public static final 没写也会自动加上
 * 没有构造方法
 * 成员方法
 * JDK7前：接口中只能定义抽象方法
 * JDK8：接口中可以定义有方法体的方法 （默认、静态）
 * JDK9：接口中可以定义私有方法
 */
public interface Swim {
    // 默认加上了 public static final int A = 10;
    int A = 10;

    // 抽象方法
    // 默认加上了 public abstract void swim();强制重写
    void swim();

    // JDK8默认方法
    // 有方法体的方法，不强制重写，重写的时候去掉default关键字，public可以省略，
    // 如果实现了多个接口，多个接口中存在相同名字的默认方法，子类就必须对改方法进行重写
    public default void show() {
    }

    // JDK8静态方法，public可以省略，static不能省略，静态方法不需要重写
    public static void say() {
    }

    // JDK9私有方法
    // 普通私有方法 给默认方法服务
    private void noise() {
        System.out.println("你好");
    }

    // JDK9静态私有方法 给静态方法服务
    private static void noise2() {
        System.out.println("你好");
    }
};
